export class AIUtils {
  static isStreaming = false;
  static currentStream = null;

  static async generateResponse(text) {
    // 模拟AI思考时间
    await new Promise(resolve => setTimeout(resolve, 500));
    
    // 根据用户输入生成回复
    let response = '';
    if (text.includes('你好') || text.includes('hi') || text.includes('hello')) {
      response = "你好！我是你的AI智能助手，很高兴能为你服务。我可以帮助你解答各种问题，提供专业建议，或者只是陪你聊聊天。无论是工作上的难题，还是生活中的困惑，我都会尽力为你提供帮助。我支持文字和语音两种交互方式，你可以选择最方便的方式与我交流。如果你有任何问题，随时都可以问我。";
    } else if (text.includes('名字') || text.includes('谁')) {
      response = "我是你的AI智能助手，一个由先进技术驱动的对话系统。我能够理解自然语言，进行智能对话，并提供有价值的建议和帮助。我的知识库涵盖了多个领域，包括科技、生活、教育、健康等。我可以帮助你解答问题、提供建议、分析数据，甚至陪你聊天解闷。无论你需要什么帮助，我都会尽力为你提供最专业的服务。";
    } else if (text.includes('帮助') || text.includes('help')) {
      response = "我很乐意为你提供帮助！作为AI助手，我可以帮你处理各种任务。比如，我可以帮你查找信息、解答问题、提供建议、分析数据、制定计划等。如果你遇到技术问题，我可以提供技术支持；如果你需要生活建议，我可以分享实用技巧；如果你想要学习新知识，我可以推荐学习资源。请告诉我你具体需要什么帮助，我会为你提供最合适的解决方案。";
    } else if (text.includes('谢谢') || text.includes('thank')) {
      response = "不客气！很高兴能帮到你。作为AI助手，我的使命就是为用户提供最好的服务。如果你还有其他问题或需要帮助，随时都可以问我。无论是简单的问题还是复杂的任务，我都会认真对待，尽力提供最专业的解答。记住，我随时都在这里，准备为你提供帮助。希望我们的对话能给你带来价值，期待下次继续为你服务！";
    } else {
      // 默认回复，包含用户输入的内容
      response = `我理解你说的是："${text}"。这是一个很好的问题，让我来为你详细解答。作为AI助手，我会从多个角度分析这个问题，并提供全面的回答。首先，我会考虑问题的背景和上下文，然后结合我的知识库，给出最合适的建议。同时，我也会考虑到你的具体需求，确保回答既专业又实用。如果你需要更详细的信息或者有其他问题，随时都可以继续问我。`;
    }
    
    return response;
  }

  static async streamResponse(text, onProgress) {
    if (this.isStreaming) {
      this.stopStreaming();
    }

    this.isStreaming = true;
    const response = await this.generateResponse(text);
    const chars = response.split('');
    
    // 使用流式输出
    for (let i = 0; i < chars.length; i++) {
      if (!this.isStreaming) break;
      await new Promise(resolve => {
        this.currentStream = setTimeout(resolve, 50);
      });
      onProgress(chars.slice(0, i + 1).join(''));
    }
    
    this.isStreaming = false;
    this.currentStream = null;
    return response;
  }

  static stopStreaming() {
    this.isStreaming = false;
    if (this.currentStream) {
      clearTimeout(this.currentStream);
      this.currentStream = null;
    }
  }
} 